const fs = require('fs');

// 事件中心
events = {
    _events: [],
    on(fn) {
        this._events.push(fn);
    },
    emit(data) {
        this._events.forEach(cb => cb(data))
    }
}

events.on(() => {
    console.log('每读取一次，就触发一次')
})

let arr = [];
events.on((data) => {
    arr.push(data)
})

events.on((data) => {
    if (arr.length === 2) {
        console.log('读取完毕')
    }
})


fs.readFile('./a.txt', 'utf8', function (err, data) {
    // console.log(data);
    // out(data);
    events.emit(data);
})

fs.readFile('./b.txt', 'utf8', function (err, data) {
    // console.log(data);
    // out(data);
    events.emit(data);
})

// 两个文件都读取后才打印

// 观察者模式 基于发布订阅模式  发布订阅模式中 发布和订阅没有依赖关系
// 观察者模式 存在观察者和被观察者
